package com.geline.cloud.core;

import java.io.Serializable;

/**
 * 获取用户、租户信息
 * @author: mengxin
 * @date: 2022/6/21 20:27
 */
public interface BaseSessionService<T extends Serializable> {

    void checkLogin();

    /**
     * 获取登录用户ID
     * @return
     */
    T getUserId();

    /**
     * 获取登录用户ID
     * @return
     */
    T getUserIdNotHandle();

    /**
     * 获取登录用户名称
     * @return
     */
    String getUserName();

    /**
     * 获取登录用户ID
     * @return
     */
    Serializable getTenantId();

    /**
     * 登录成功，返回token
     * @param userId
     * @param nickName
     * @param userName
     * @return
     */
    default String login(Object userId, String nickName, String userName){
        return login(userId, nickName, userName, null);
    }

    /**
     * 登录
     * @param userId
     * @param nickName
     * @param userName
     * @param tenantId
     * @return
     */
    String login(Object userId, String nickName, String userName, String tenantId);
}
